﻿/*****************************************介绍*****************************************
 * 作者：User
 * 创建时间：2025-06-18 13:42:09
 * 功能：Toggle改变时文本显示处理
 *      适合用于：Toggle的开关状态改变时，需要显示不同文本的场景。
 *      适合用于：Toggle的开关状态改变时，需要改变文本颜色的场景。
 *      节点结构：
 *          └─Toggle
 *              └─Text
**************************************************************************************/

using UnityEngine;
using UnityEngine.UI;

[RequireComponent(typeof(Toggle))]
public class ToggleValueChangedLabelHandle : MonoBehaviour
{
    [SerializeField] string m_OnText;
    [SerializeField] string m_OffText;
    [SerializeField] Color m_OnColor = Color.white;
    [SerializeField] Color m_OffColor = Color.white;
    [SerializeField] Text m_Text;
    private Toggle m_Toggle;

    private void Awake()
    {
        m_Toggle = GetComponent<Toggle>();
        m_Toggle.onValueChanged.AddListener(OnToggleValueChanged);
    }

    private void OnEnable()
    {
        OnToggleValueChanged(m_Toggle.isOn);
    }

    private void OnToggleValueChanged(bool isOn)
    {
        if (isOn)
        {
            if (!string.IsNullOrEmpty(m_OnText)) m_Text.text = m_OnText;
            m_Text.color = m_OnColor;
        }
        else
        {
            if (!string.IsNullOrEmpty(m_OffText)) m_Text.text = m_OffText;
            m_Text.color = m_OffColor;
        }
    }

    private void OnDestroy()
    {
        m_Toggle.onValueChanged.RemoveListener(OnToggleValueChanged);
    }
}